home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / ddj0492.zip / WAVELET.ZIP / WAVE_MGT.C < prev    next >
Text File  |  1991-11-13  |  2KB  |  88 lines

  1. #define WAVE_MGT
  2. #include <alloc.h>
  3. #include "wave_mgt.h"
  4.  
  5. double **BuildTreeStorage(int inlength, int levels)
  6. {
  7.     double **tree;
  8.     int i, j;
  9.  
  10.     /* create decomposition tree */
  11.     tree = (double **) calloc(2 * levels, sizeof(double *));
  12.     j = inlength;
  13.     for (i = 0; i < levels; i++)
  14.     {
  15.         j /= 2;
  16.         if (j == 0)
  17.         {
  18.             levels = i;
  19. /*            printf("\nToo many levels requested for available data\n");
  20.             printf("Number of transform levels now set to %d\n", levels); */
  21.             continue;
  22.         }
  23.         tree[2 * i] = (double *) calloc((j + 5), sizeof(double));
  24.         tree[2 * i + 1] = (double *) calloc((j + 5), sizeof(double));
  25.     }
  26.     return tree;
  27. }
  28.  
  29.  
  30. void DestroyTreeStorage(double **tree, int levels)
  31. {
  32.     char i;
  33.  
  34.     for (i = (2 * levels - 1); i >= 0; i--)
  35.         free(tree[i]);
  36.  
  37.     free(tree);
  38. }
  39.  
  40.  
  41. void TreeCopy(double **TreeDest, double **TreeSrc, int siglen, int levels)
  42. {
  43.     int i, j;
  44.  
  45.     for (i = 0; i < levels; i++)
  46.     {
  47.         siglen /= 2;
  48.         for (j = 0; j < siglen + 5; j++)
  49.         {
  50.             if ((i + 1) == levels)
  51.                 TreeDest[2 * i][j] = TreeSrc[2 * i][j];
  52.             else
  53.                 TreeDest[2 * i][j] = 0.0;
  54.  
  55.             TreeDest[(2 * i) + 1][j] = TreeSrc[(2 * i) + 1][j];
  56.         }
  57.     }
  58. }
  59.  
  60.  
  61. void TreeZero(double **Tree, int siglen, int levels)
  62. {
  63.     int i, j;
  64.  
  65.     for (i = 0; i < levels; i++)
  66.     {
  67.         siglen /= 2;
  68.         for (j = 0; j < siglen + 5; j++)
  69.         {
  70.             Tree[2 * i][j] = 0.0;
  71.             Tree[(2 * i) + 1][j] = 0.0;
  72.         }
  73.     }
  74. }
  75.  
  76.  
  77. void ZeroTreeDetail(double **Tree, int siglen, int levels)
  78. {
  79.     int i, j;
  80.  
  81.     for (i = 0; i < levels; i++)
  82.     {
  83.         siglen /= 2;
  84.         for (j = 0; j < siglen + 5; j++)
  85.             Tree[(2 * i) + 1][j] = 0.0;
  86.     }
  87. }
  88.